package com.example.wwj.vo;

import lombok.Data;

/**
 * 定义返回统一的接口风格
 * {
 *     code:状态码,
 *     msg:提示信息,
 *     data:返回的数据
 * }
 */
@Data
public class ResultVo {
    /**
     * 默认200表示成功
     *
     * 1开头  商品相关的状态码
     *  100001  商品已下架
     *  100002  商品库存不足
     *  100003  商品已售罄
     * 2开头  会员相关的状态码
     *  200001  用户不存在
     *  200002  会员已到期
     *  200003  用户信息不完整
     */
    private int code = 200;

    /**
     * 提示信息,默认success成功
     */
    private String msg = "success";

    /**
     * 返回数据
     */
    private Object data;

    //构造方法私有化:外部类不能new
    private ResultVo(){}

    /**
     * 接口成功调用有返回值时
     */
    public static ResultVo successVo(Object data){
        ResultVo resultVo = new ResultVo();
        resultVo.setData(data);
        return resultVo;
    }

    /**
     * 接口调用成功没有返回值时
     */
    public static ResultVo successVo(){
        return new ResultVo();
    }

    /**
     * 接口调用失败
     */
    public static ResultVo errorVo(int code,String msg){
        ResultVo resultVo = new ResultVo();
        resultVo.setCode(code);
        resultVo.setMsg(msg);
        return resultVo;
    }
}
